/**
 * 这里有两种数据请求方式：
 * 1、mock的时候使用axios请求
 * 2、真正上线换成腾讯云开发
 */
import axios from "axios";
import { MessageBox, Message } from "element-ui";
import { LoadingModule } from "@/store/modules/LoadingModule";
import { isDevelopment } from ".";

/**
 * 默认的定义
 * 下面的设置，会覆盖这个默认的url。
 */
axios.defaults.baseURL = process.env.VUE_APP_YCZS_LOGIN + "";
/**
 * 创建axios实例
 */
const service = axios.create({
  timeout: 5000
});
/**
 * request 拦截器
 */
service.interceptors.request.use(
  config => {
    LoadingModule.StartRequesting();

    // 让每个请求携带自定义token
    if (process.env.VUE_APP_TOKEN_FLAG) {
      // config.headers["X-Token"] = getToken();
      // console.log("request 拦截器", process.env.VUE_APP_TOKEN_FLAG);
    }

    // 根据环境修改config，起到选择api数据源的作用。
    if (isDevelopment()) {
      config.baseURL = process.env.VUE_APP_MOCK_API + "";
    }

    return config;
  },
  error => {
    // Handle request error here
    Promise.reject(error);
  }
);
/**
 * response 拦截器
 */
service.interceptors.response.use(
  response => {
    const res = response.data;
    LoadingModule.StopRequesting();
    if (res.status !== 200) {
      Message({
        message: res.message,
        type: "error",
        duration: 5 * 1000
      });
      return Promise.reject("error");
    } else {
      return response.data.data;
    }
  },
  error => {
    LoadingModule.StopRequesting();
    return Promise.reject(error);
  }
);

export default service;
